package org.dromara.patrol.domain.vo;

import com.google.common.collect.Maps;
import org.dromara.patrol.domain.PatrolTask;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.patrol.domain.model.ExecuteRule;
import org.dromara.patrol.domain.model.PatrolExecutors;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.Map;


/**
 * 巡店管理-巡店任务（实时、现场、录像，不包含自检任务）配置视图对象 patrol_task
 *
 * @author Chan
 * @date 2024-03-21
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PatrolTask.class)
public class PatrolTaskVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 任务id
     */
    private Long taskId;
    /**
     * 创建时间戳
     */
    private Long createdTime;
    /**
     * 创建人
     */
    private Long creator;
    /**
     * 任务名称
     */
    private String name;
    /**
     * 巡检任务编码
     */
    private String code;
    /**
     * 任务执行人
     */
    private String handler;
    /**
     * 任务周期开始分秒
     */
    private Long expectStartTime;
    /**
     * 任务周期完成分秒
     */
    private Long expectFinishTime;
    /**
     * 任务开始时间
     */
    private Long startTime;
    /**
     * 任务结束时间
     */
    private Long finishTime;
    /**
     * 任务状态
     * @see org.dromara.common.core.enums.patrol.TaskFinishStatus
     */
    private String status;
    /**
     * 巡检任务类型
     */
    private String taskType;
    /**
     * 巡检任务类型
     */
    private String taskSubType;
    /**
     * 模板id
     */
    private Long templateId;
    /**
     * 任务备注
     */
    private String remark;
    /**
     * 可执行
     */
    private String executable;
    /**
     * 过期状态
     * @see org.dromara.common.core.enums.patrol.ExpiredStatus
     */
    private String expiredStatus;
    /**
     * 门店id
     */
    private String storeId;
    /**
     * 门店名称
     */
    private String storeName;
    /**
     * 区域名称
     */
    private String areaName;
    /**
     * 门店分组名称
     */
    private String storeGroupName;
    /**
     * 门店分组id
     */
    private String groupId;
    /**
     * 录像巡检任务开始时间
     */
    private String videoStartTime;
    /**
     * 录像巡检任务结束时间
     */
    private String videoEndTime;
    /**
     * 巡检任务子任务状态
     */
    private String subTaskStatus;
    /**
     * 巡检任务周期类型
     * @see org.dromara.common.core.enums.patrol.RepeatType
     */
    private String cycleType;
    /**
     * 巡检任务执行规则
     */
    private ExecuteRule executeRule;
    /**
     * 巡检任务模板规则
     */
    private String templateRule;
    /**
     * 巡检任务执行人
     */
    private List<PatrolExecutors> patrolExecutors;
    /**
     * 通知人
     */
    private String notifier;
    /**
     * 版本号
     */
    private String ver;
    /**
     * 主任务id
     */
    private String mainSubTaskId;

    /**
     * key:id，value:名称
     * 集合（用于前端显示）
     */
    private Map<Long, String> nameMap = Maps.newHashMapWithExpectedSize(16);
}
